AWS Snowballことはじめ パート4【Snowballの配送依頼】
Snowball はセキュアなアプライアンスを使用したペタバイト規模のデータ転送ソリューションです。 今回からは最も一般的なユースケースと思われる、オンプレミスから AWS へのデータ移行(インポートジョブ)の手順を紹介します。
今回は Snowball の配送依頼の手順を紹介します。
3 行まとめ
今回のブログのポイントは以下の3点です
- 利用する S3 と同じリージョンで Snowball ジョブを作成
- Snowball のディスク容量はアメリカは 80TB/50TB の2択、残りの地域では 80TB 一択。
- ジョブの進捗は SNS で通知可能
リージョン選択
AWS Snowball はすべてのリージョンで利用出来るわけではありません。 AWS Snowball が提供されているリージョンに移動します。 また、Snowball を利用するリージョンと Snowball の配送先は強い結びつきがあります。
例えば
- アメリカ内のリージョンを利用する場合は、アメリカ以外には Snowball を配送できない
- Sydney リージョンを利用する場合は、オーストラリア以外には Snowball を配送できない
- EU 内のリージョンを利用する場合は、EU の28カ国以外には Snowball を配送できない
などです。
参考 : https://docs.aws.amazon.com/AWSImportExport/latest/ug/shipping.html
Snowball マネジメントコンソールへ移動
AWS マネジメントコンソールにログイン後、Snowball を利用するリージョンに移動し、"Create job" ボタンをクリックするとジョブの作成画面に移動します。
Snowball インポートジョブの作成
まずは AWS S3 にデータを取り込むインポートジョブを AWS マネジメントコンソールから作成します。
Snowball のトップから ”Create Job" をクリックすると、ジョブの作成画面に遷移します。
Step 1: Plan your job
ジョブの種類は以下の2種類があります。
- AWS S3 にデータを転送する Import into Amazon S3
- AWS S3 からデータを転送する Export from Amazon S3
今回は、AWS S3 にデータを取り込むため、前者の "Import into Amazon S3" を選択します。
Step 2: Give shipping details
次に、Snowball のサイズと 配送先と配送スピードを選択します。
サイズ
アメリカ地域では - 50TB - 80TB の両方に対応しているため、欲しいサイズを選択します。
アメリカ以外の地域では 80TB にしか対応していないため、この設定画面は存在しません。
50 TB は 200 USD, 80 TB は 250 USD の料金がかかります。
配送先
Snowball の配送先を指定します。
- 私書箱(post office box) への配送はできない
- Snowball の配送先と Snowball の利用先は同じでなければいけない
などの制限があるためご注意下さい。
参考 : https://docs.aws.amazon.com/AWSImportExport/latest/ug/shipping.html
配送スピード
配送スピードのオプションは地域によって異なります。 例えば、ドイツのフランクフルト・リージョンでは
- Express Shipping (1-2 business days)
- Standard Shipping (3-7 business days)
が選択可能でした。
配送方法によって料金は変わります。
Step 3: Give job details
Import job name
ジョブ名を記入します。
Destination
データのインポート先バケットを指定します。
専用バケットを用意していなかった場合は、プルダウンの "Create a bucket" から新規 S3 バケットが作成可能です。
Step 4: Set security
Permission
Snowball が S3 バケットにオブジェクトを書き込むために assume するロールを用意します。
ウィザード形式では以下のロールが作成されました
Permissions
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetBucketPolicy", "s3:GetBucketLocation", "s3:ListBucketMultipartUploads" ], "Resource": "arn:aws:s3:::*" }, { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:AbortMultipartUpload", "s3:ListMultipartUploadParts", "s3:PutObjectAcl" ], "Resource": "arn:aws:s3:::*" } ] }
Trust Relationships
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "importexport.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "sts:ExternalId": "AWSIE" } } } ] }
Encryption
AWS Snowball では Snowball に保存するオブジェクトは暗号化されます。この暗号鍵 は Envelope Encryption を使って暗号化されます。
ここでは Envelop Encryption に使うマスター鍵を指定します。
Snowball 用のデフォルトのマスター鍵の他、同一・別アカウントのユーザーが作成した鍵を指定することもできます。
参考 : https://docs.aws.amazon.com/AWSImportExport/latest/ug/kms.html
Step 5: Set notifications
Snowball が出荷されたなど、Snowball ジョブのステータスが遷移すると SNS 経由で通知を受けることができます。 この通知設定を行います。
SNS と 通知を受けたいイベントを指定します。
対応しているイベントは以下です。
Job Status | Description | Job Type That Status Applies To |
---|---|---|
Job created | ジョブが作成された直後。このステータスの間だけは、ジョブをキャンセルできます。 | Both |
Preparing Snowball | AWSは、ジョブのためにSnowballを準備しています。 | Both |
Exporting | AWSは、Amazon S3から Snowball にデータをエクスポートしています。 | Export |
Preparing shipment | AWSはSnowballを出荷する準備をしています。 | Both |
In transit to you | Snowball は、ジョブの作成時に提供されたアドレスに出荷されています。 | Both |
Delivered to you | Snowball はジョブの作成時に提供されたアドレスに到達しました。 | Both |
In transit to AWS | Snowball を AWS に返送した。 | Both |
At AWS | 出荷した Snowball がAWSに到達した。
インポートは、到着後1日以内に開始されます。 |
Both |
Importing | AWS が Amazon S3 にデータをインポートしています。 | Import |
Completed | インポートジョブやエクスポートジョブが正常に完了しました。 | Both |
Canceled | Your job has been canceled. You can only cancel Snowball import jobs during theJob created status.
ジョブがキャンセルされました。 Snowball インポートジョブは ”Job created”ステータスの間だけキャンセルすることができます。 |
Both |
もちろん、通知を受けないようにすることもできます。
Step 6: Review
最後に登録内容を確認し "Create Job" ボタンをクリックするとジョブが作成されます。
1時間以内であれば、取り消すことも可能です。
逆に、ワークフローが動き出すと、取り消せないということです。気をつけましょう。
Snowball ジョブの作成完了
作成が完了すると、マネジメントコンソール上でジョブが作成され、ジョブのステータスが確認できます。
SNS と Email を連携させ、ジョブ作成後に実際に届いた通知が以下です。
API からジョブを確認してみる
describe-job API にジョブIDを渡すと、ジョブの詳細を確認できます。
ジョブを作成したばかりのため、5行目"JobState": "New"
となっています。
また、インポートジョブのため、27行目が "JobType": "IMPORT"
となっています。
$ aws snowball describe-job --job-id JIDXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX --region eu-central-1 { "JobMetadata": { "SnowballCapacityPreference": "T80", "JobState": "New", "Description": "cm-berlin", "AddressId": "XXXXXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", "KmsKeyARN": "arn:aws:kms:eu-central-1:123456789012:key/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", "Notification": { "NotifyAll": false, "JobStatesToNotify": [ "New", "WithAWS", "InProgress", "WithCustomer", "PreparingShipment", "InTransitToAWS", "PreparingAppliance", "Cancelled", "InTransitToCustomer", "Complete" ], "SnsTopicARN": "arn:aws:sns:eu-central-1:123456789012:snowball-import-s3" }, "RoleARN": "arn:aws:iam::123456789012:role/snowball-import-S3-role", "JobId": "JIDXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", "JobType": "IMPORT", "CreationDate": 1473181393.0, "Resources": { "S3Resources": [ { "BucketArn": "arn:aws:s3:::xxxxxxxx", "KeyRange": {} } ] }, "ShippingDetails": { "ShippingOption": "STANDARD" } } }
まとめ
Snowball ジョブの作成方法を紹介しました。
配送については制約がいろいろとあるため、ご利用までに一度 "Shipping Considerations for AWS Snowball - AWS Import/Export" を一読下さい。 また SNS 通知を有効にすると、 Snowball の出荷・返送・取り込み完了などをリアルタイムで受け取れるため、ぜひ有効にして下さい。
次回は Snowball の配送と Snowball 到着後の初期設定を紹介します。